import diff from "./diff";
export default function updateComponent(
  virtualDOM,
  oldComponent,
  oldDOM,
  container
) {
    // 调用生命周期函数-接收新props
  oldComponent.componentWillReceiveProps(virtualDOM.props);

  // 调用生命周期函数-组件是否需要更新（此处暂时只比较props）
  if (oldComponent.shouldComponentUpdate(virtualDOM.props)) {
    // 未更新前的props
    let prevProps = oldComponent.props;
    oldComponent.componentWillUpdate(virtualDOM.props);

    // 组件更新
    // 1. 将最新的props传递到组件中
    oldComponent.updateProps(virtualDOM.props);
    // 2. 调用组件的render方法获取组件返回最新 VirtualDOM 对象
    let nextVirtualDOM = oldComponent.render();
    // 3. 挂载组件的实例对象
    nextVirtualDOM.component = oldComponent;
    // 4. 将 VirtualDOM 对象传递给 diff 方法，让 diff 找出差异
    diff(nextVirtualDOM, container, oldDOM);
    // 5. 调用生命周期函数-组件更新后调用
    oldComponent.componentDidUpdate(prevProps);
  }
}
